// app.js
App({
  onLaunch() {
    // 初始化本地存储日志
    this.initLogs();
    
    // 检查用户登录状态
    this.checkLoginStatus();
    
    // 获取系统信息（使用最新API）
    this.initSystemInfo();
  },

  // 初始化日志
  initLogs() {
    try {
      const logs = wx.getStorageSync('logs') || [];
      logs.unshift(Date.now());
      wx.setStorageSync('logs', logs);
    } catch (err) {
      console.error('日志初始化失败:', err);
    }
  },

  // 检查登录状态
  checkLoginStatus() {
    try {
      const userInfo = wx.getStorageSync('userInfo');
      if (userInfo) {
        this.globalData.userInfo = userInfo;
        this.globalData.isLogin = true;
      }
    } catch (err) {
      console.error('登录状态检查失败:', err);
    }
  },

  // 获取系统信息（使用同步API）
  initSystemInfo() {
    try {
      const systemInfo = wx.getSystemInfoSync();
      this.globalData.systemInfo = systemInfo;
      // 适配所有全面屏iPhone（X/11/12/13等）
      this.globalData.isIPhoneX = /iphone (x|1[1-9])/i.test(systemInfo.model);
      
      // 安全区域适配
      this.globalData.safeArea = systemInfo.safeArea || {
        top: 0,
        bottom: systemInfo.windowHeight
      };
    } catch (err) {
      console.error('获取系统信息失败:', err);
      // 设置默认值
      this.globalData.systemInfo = {
        windowWidth: 375,
        windowHeight: 667,
        model: 'unknown'
      };
      this.globalData.isIPhoneX = false;
    }
  },

  // 全局数据
  globalData: {
    userInfo: null,       // 用户信息
    isLogin: false,       // 登录状态
    systemInfo: null,     // 系统信息
    isIPhoneX: false,     // 是否全面屏设备
    safeArea: null,       // 安全区域信息
    
    // 底部导航配置（与app.json的tabBar.list保持一致）
    tabList: [
      { text: "订单列表", pagePath: "pages/orderlist/orderlist", icon: "order" },
      { text: "二手买卖", pagePath: "pages/release-order/release-order", icon: "community" },
      { text: "首页", pagePath: "pages/index/index", icon: "home" },
      { text: "骑手入驻", pagePath: "pages/cyclist/cyclist", icon: "rider" },
      { text: "我的", pagePath: "pages/mine/mine", icon: "mine" }
    ]
  },

  // 全局登录方法（返回Promise）
  login() {
    return new Promise((resolve, reject) => {
      if (this.globalData.isLogin) {
        resolve(this.globalData.userInfo);
        return;
      }

      wx.login({
        success: (loginRes) => {
          // 获取用户信息
          wx.getUserProfile({
            desc: '用于完善会员资料',
            success: (res) => {
              const userInfo = res.userInfo;
              try {
                wx.setStorageSync('userInfo', userInfo);
                this.globalData.userInfo = userInfo;
                this.globalData.isLogin = true;
                resolve(userInfo);
              } catch (err) {
                reject(new Error('存储用户信息失败'));
              }
            },
            fail: (err) => {
              reject(new Error('用户拒绝授权'));
            }
          });
        },
        fail: (err) => {
          reject(new Error('微信登录失败'));
        }
      });
    });
  },

  // 全局登出方法
  logout() {
    try {
      wx.removeStorageSync('userInfo');
      this.globalData.userInfo = null;
      this.globalData.isLogin = false;
      return true;
    } catch (err) {
      console.error('登出失败:', err);
      return false;
    }
  },

  // 全局导航方法
  switchTab(e) {
    try {
      const index = e.currentTarget?.dataset.index ?? e?.index ?? 0;
      const tab = this.globalData.tabList[index];
      if (!tab) throw new Error('无效的tab索引');

      const pages = getCurrentPages();
      const currentPage = pages[pages.length - 1]?.route;

      // 已经是目标页面则不跳转
      if (currentPage === tab.pagePath) return;

      wx.switchTab({
        url: '/' + tab.pagePath,
        fail: () => {
          // 降级处理：尝试navigateTo
          wx.navigateTo({
            url: '/' + tab.pagePath,
            fail: () => {
              wx.showToast({ title: '跳转失败', icon: 'none' });
            }
          });
        }
      });
    } catch (err) {
      console.error('导航错误:', err);
      wx.showToast({ title: '导航失败', icon: 'none' });
    }
  },

  // 检查登录状态并跳转
  checkLoginAndNavigate(options = {}) {
    if (!this.globalData.isLogin) {
      wx.showModal({
        title: '提示',
        content: options.content || '请先登录',
        confirmText: options.confirmText || '去登录',
        cancelText: options.cancelText || '取消',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: options.loginPage || '/pages/login/login',
              success: () => {
                options.success?.();
              },
              fail: options.fail
            });
          } else {
            options.cancel?.();
          }
        }
      });
      return false;
    }
    return true;
  },

  // 安全区域适配（用于全面屏设备）
  getSafeAreaInsets() {
    return {
      top: this.globalData.safeArea?.top || 0,
      bottom: this.globalData.systemInfo?.windowHeight - (this.globalData.safeArea?.bottom || 0)
    };
  }
});